import {useTokenStore} from '@/store/token.js'

const baseUrl='http://localhost:8080'

uni.addInterceptor('request',{
	// args代表我的请求参数
	invoke(args){
		console.log('--------args----------')
		console.log(args);
		// 如果发的请求不包含http前端
		if(!args.url.startsWith('http')){
			args.url=baseUrl+args.url;
		}
		
		// 向后端请求时  代表你是小程序
		args.header = {
					'source-client': 'miniapp',
				}
		// 去pinia中取牌牌
		const paipai=useTokenStore().token;
		if(paipai){
			args.header.authentication= paipai.token;
		}
	}
})


// 响应的时候 
// 1. 把data给抠出来
// 2.针对没有权限的 直接给他打到登录页面
export const http = (options) => {
	// 1. 返回 Promise 对象
	return new Promise((resolve, reject) => {
		uni.request({
			...options,
			// 响应成功
			success(res) {
				// 状态码 2xx，参考 axios 的设计
				if (res.data.code ==200) {
					// 2.1 提取核心数据 res.data
					resolve(res.data)
				} else if (res.data.code === 0) {
					// 401错误  -> 清理用户信息，跳转到登录页
					useTokenStore().removeToken();// 清除你的用户信息
					// 打到登录页面
					uni.navigateTo({
						url: '/pages/login/login'
					})
					reject(res)
				} else {
					// 其他错误 -> 根据后端错误信息轻提示
					uni.showToast({
						icon: 'none',
						title: res.data.shuju || '请求错误',
					})
					reject(res)
				}
			},
			// 响应失败
			fail(err) {
				uni.showToast({
					icon: 'none',
					title: '网络错误!',
				})
				reject(err)
			},
		})
	})
}